#pragma once
#include <type_traits>
#include <galois/cont/ArrayHandle.h>

namespace galois
{
namespace cont
{

template <typename Tag, typename Type>
struct TypeCheck : std::false_type
{
};


struct TypeCheckArrayHandleTag
{
};

//template<typename T>
//struct TypeCheck<TypeCheckArrayHandleTag, ArrayHandle<T>> : std::true_type
//{
//};

template <typename ArrayType>
struct TypeCheck<TypeCheckArrayHandleTag, ArrayType> 
{
  static constexpr bool value = std::is_base_of<ArrayHandleBase, ArrayType>::value;
};

}
}